package com.huawei.xme.ch02.t14;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * @author 黄后林
 * @date 2022-10-26 09:13:08
 * @note 程序员是用代码喂出来的
 *
 * 编写一个程序，对用户输入的任意一组字符如{3，1，4，7，2，1，
 * 1，2，2}，输出其中出现次数最多的字符，并显示其出现次数。如果有
 * 多个字符 出现次数均为最大且相等，则输出最先出现的那个字符和它
 * 出现的次数。例如，上面输入的字符集合中，‚1‛和‚2‛都出现了 3
 * 次，均为最大出现次数，因为‚1‛先出现，则输出字符‚1‛和它出现
 * 的次数 3 次
 */
public class Task01 {

    public static void main(String[] args) {
        char[] array={'3','1','4','7','2','1','1','2','2'};

        System.out.println(xx(array));;


    }

    public static Map<Character,Integer>  xx(char[] array){

        Map<Character,Integer> map = new HashMap<>();

        // 1、把数据放到map中
        for(int index=0;index<array.length;index++){
            char c = array[index];
            if(map.get(c) == null){
                map.put(c,1);
            }else{
                map.put(c,map.get(c)+1);
            }
        }
        System.out.println("map="+map);

        //2、找到最大的数

        Set<Character> characters = map.keySet();
        int max =0;
        for(char c : characters){
            if(map.get(c)>max){
                max=map.get(c);
            }
        }
        System.out.println("max="+max);

        //3、看最大的数出现几次
        int counter=0;
        Set<Character> cs = map.keySet();
        for(char c : cs){
            if(map.get(c)==max){
                counter= counter+1;
            }
        }
        System.out.println("counter="+counter);



        if(counter>=2){
            //4、说明有多个

            Set<Character> chars = map.keySet();
            Map<Character,Integer> tmpMap = new HashMap<>();
            for(char c : chars){
                if(map.get(c)==max){
                    tmpMap.put(c,max);
                }
            }
            System.out.println("tmpMap"+tmpMap);


            Map<Character,Integer> rs = new HashMap<>();

            // 最后返回
            for(int index=0;index<array.length;index++){

                char c = array[index];
                Set<Character> css = tmpMap.keySet();
                for(char cc : css){
                    if(c == cc){
                       rs.put(c,tmpMap.get(c));
                       return rs;
                    }
                }


            }
        }else{
            //4、说明有1个
            Set<Character> chars = map.keySet();
            Map<Character,Integer> tmpMap = new HashMap<>();
            for(char c : chars){
                if(map.get(c)==max){
                    tmpMap.put(c,max);
                    return tmpMap;
                }
            }
            System.out.println("tmpMap"+tmpMap);
        }

        return null;

    }
}
